package org.example.campusforum.controller;

import lombok.extern.slf4j.Slf4j;
import org.example.campusforum.common.Result;
import org.example.campusforum.dto.CommentPublish;
import org.example.campusforum.service.CommentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 评论控制器
 *
 * 处理评论相关的HTTP请求，包括评论的发布功能。
 * 支持顶级评论和回复评论，实现论坛的互动交流功能。
 * 所有接口都需要JWT认证，通过拦截器验证用户身份。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@RestController
@RequestMapping("/api/user/comment")
@Slf4j
public class CommentController {

    /**
     * 评论服务层，处理评论相关业务逻辑
     */
    @Autowired
    private CommentService commentService;

    /**
     * 发布评论
     *
     * 接收用户发布评论的请求，支持顶级评论和回复评论。
     * 通过parentId字段区分评论类型：0表示顶级评论，非0表示回复评论。
     * 用户ID从JWT令牌中自动获取。
     *
     * @param comment 评论发布信息，包含文章ID、评论内容、父评论ID等
     * @return 统一响应结果，成功时返回success
     */
    @PostMapping("")
    public Result comment(@RequestBody CommentPublish comment) {
        log.info("发布评论：{}", comment);

        commentService.save(comment);
        return Result.success("评论发布成功");
    }

}